<?php
if(!defined("AUCUNE_ERREUR"))
	define("AUCUNE_ERREUR", 0);
	
if(!defined("ERREUR_TAG_EXISTE_DEJA"))
	define("ERREUR_TAG_EXISTE_DEJA", 1);
	
if(!defined("ERREUR_TAG_VIDE"))
	define("ERREUR_TAG_VIDE", 2);

if(!defined("ERREUR_USAGER_VIDE"))
	define("ERREUR_USAGER_VIDE", 1);

$erreur = 0;

/**
 * Va chercher tous les tags pour l'usager reçu en paramètre dans la base de données et les retourne sous forme de tableau.
 * L'index 0 (id) contient le id du tag
 * L'index 1 (name) contient le nom du tag
 */
function get_all_tags_for_user($user_id, $getAllTag=true) {
    $results = array();
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
	mysql_select_db(DB_NAME) or die(mysql_error());
    $sql =  "SELECT id, name FROM label WHERE user_id=$user_id AND (name <> 'all' OR ".(($getAllTag) ? '1':'0').")";
	$query_result = mysql_query($sql) or die($sql."<br>".mysql_error());

	while($row = mysql_fetch_array($query_result)) {
		array_push($results, array("id" => $row[0], "name" => $row[1]));
	}

	return $results;
}

/**
 * Va chercher un range de tags
 * Par exemple, de 'A' à 'C' va chercher tous les tags entre 'A' et 'C'.
 */
function get_range_of_tags($start, $end, $user_id) {
    $results = array();
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
	mysql_select_db(DB_NAME) or die(mysql_error());
	$query_result = mysql_query("SELECT id, name FROM label WHERE user_id=$user_id AND LEFT(name, 1) >= $start AND LEFT(name, 1) <= $end");

	while($row = mysql_fetch_array($query_result)) {
		array_push($results, array("id" => $row[0], "name" => $row[1]));
    }

    return $results;
}

/**
 * Va chercher tous les tags pour l'usager authentifié.
 * S'il n'y a pas d'usager authentifié, met $erreur à ERREUR_USAGER_VIDE et retourne un tableau vide.
 */
function get_all_tags_for_current_user($getAllTag=True) {
	if(!usager_auth()) {
		$erreur = ERREUR_USAGER_VIDE;
		return array();
	}
	$erreur = AUCUNE_ERREUR;
	return get_all_tags_for_user($_SESSION['user_id'], $getAllTag);
}

/**
 * Ajoute un nouveau tag dans la base de données pour l'usager authentifié et retourne le nouvel id.
 * Si l'usager n'est pas authentifié, met $erreur à ERREUR_USAGER_VIDE et retourne 0.
 * Si le nom existe déjà, met $erreur à ERREUR_TAG_EXISTE_DEJA et retourne 0. 
 */
function insert_new_tag($name) {
	if(tag_name_exist($name)) {
		$erreur = ERREUR_TAG_EXISTE_DEJA;
		return 0;
	}
	if(!usager_auth()) {
        return 0;
    }
 
    return insert_new_tag_for_specific_user($name, $_SESSION['user_id']);
}

function insert_new_tag_for_specific_user($name, $user_id) {
	$sqlInsert = "INSERT INTO label (name, user_id) VALUES ('$name', '$user_id')";
    $results = array();
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_result = mysql_query($sqlInsert);
    return mysql_insert_id();

}

function update_tag_by_id($tag_id, $newName) {
    if(!usager_auth()) {
        return false;
    }
    if(tag_name_exist($newName)) {
        return false;
    }

    $user_id = $_SESSION["user_id"];
    $sqlUpdate = "UPDATE label SET name='$newName' WHERE id=$tag_id AND user_id=$user_id";
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_result = mysql_query($sqlUpdate) or die(mysql_error());
    
    return true;    
    
}

function update_tag_name($oldName, $newName) {
    if(!usager_auth()) {
        return false;
    }
    if(tag_name_exist($newName)) {
        return false;
    }
    if(!tag_name_exist($oldName)) {
        return false;
    }
    
    $user_id = $_SESSION["user_id"];
    $sqlUpdate = "UPDATE label SET name='$newName' WHERE name='$oldName' AND user_id=$user_id";
    $results = array();
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_result = mysql_query($sqlUpdate) or die(mysql_error());
    
    return true;    
}

/**
 * Supprime un tag selon le id du tag
 */
function delete_tag($tag_id) {
    if(!usager_auth()) {
        return false;
    }

    $sql = "DELETE FROM label WHERE id=$tag_id";
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_result = mysql_query($sql);
    
    $sql2 = "DELETE FROM file_label WHERE label_id=$tag_id";
    mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_result = mysql_query($sql2);
    
    return true;

}

/**
 * Vérifie si le nom du tag existe dans la base de données pour l'usager authentifié.
 */
function tag_name_exist($name) {
	if(trim($name) == "") {
		return false;
	}

	$user_id = $_SESSION["user_id"];

	mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWD) or die(mysql_error());
	mysql_select_db(DB_NAME) or die(mysql_error());
	$result = mysql_query("SELECT COUNT(*) AS cpt FROM label WHERE name = '$name' AND user_id = '$user_id'") or die(mysql_error());
	$res = mysql_fetch_assoc($result);
	$erreur = AUCUNE_ERREUR;
	return $res["cpt"] > 0;

}

/** 
 * Vérifie si l'usager est authentifié 
 */
function usager_auth() {
        if(!isset($_SESSION['user_id']) || trim($_SESSION['user_id']) == '') {
                $erreur = ERREUR_USAGER_VIDE;
                return false;
        } else {
		$erreur = AUCUNE_ERREUR;
		return true;
	}

}

?>

